// pages/user-info/index.js
Page({
  data: {
    name: '',
    phone: '',
    idCard: '',
    address: ''
  },

  async onLoad() {
    await this.loadUserInfo();
  },

  // 加载用户信息
  async loadUserInfo() {
    wx.showLoading({
      title: '加载中...',
      mask: true
    });

    try {
      const res = await wx.cloud.callFunction({
        name: 'user',
        data: {
          apiType: 'getUserInfo'
        }
      });

      wx.hideLoading();

      if (res.result.res.code === 200) {
        const userData = res.result.res.data;
        this.setData({
          name: userData.name || '',
          phone: userData.phone || '',
          idCard: userData.idCard || '',
          address: userData.address || ''
        });
      } else {
        // 用户不存在，使用空值
        this.setData({
          name: '',
          phone: '',
          idCard: '',
          address: ''
        });
      }
    } catch (error) {
      console.error('加载用户信息失败:', error);
      wx.hideLoading();
      wx.showToast({
        title: '加载失败，请重试',
        icon: 'none'
      });
    }
  },

  // 姓名输入
  onNameInput(e) {
    this.setData({
      name: e.detail.value
    });
  },

  // 电话输入
  onPhoneInput(e) {
    this.setData({
      phone: e.detail.value
    });
  },

  // 身份证输入
  onIdCardInput(e) {
    this.setData({
      idCard: e.detail.value
    });
  },

  // 地址输入
  onAddressInput(e) {
    this.setData({
      address: e.detail.value
    });
  },

  // 保存用户信息
  async saveUserInfo() {
    const { name, phone, idCard, address } = this.data;

    // 验证姓名
    if (!name || !name.trim()) {
      wx.showToast({
        title: '请输入姓名',
        icon: 'none'
      });
      return;
    }

    // 验证姓名格式（字母、中文、数字，1-16个字符）
    const namePattern = /^[A-Za-z0-9\u4e00-\u9fa5]{1,16}$/;
    if (!namePattern.test(name)) {
      wx.showToast({
        title: '姓名格式不正确',
        icon: 'none'
      });
      return;
    }

    // 验证手机号（如果填写了）
    if (phone && phone.trim() !== '') {
      const phoneReg = /^1[3-9]\d{9}$/;
      if (!phoneReg.test(phone)) {
        wx.showToast({
          title: '请输入正确的手机号',
          icon: 'none'
        });
        return;
      }
    }

    // 验证身份证号（如果填写了）
    if (idCard && idCard.trim() !== '') {
      const idCardReg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
      if (!idCardReg.test(idCard)) {
        wx.showToast({
          title: '请输入正确的身份证号',
          icon: 'none'
        });
        return;
      }
    }

    wx.showLoading({
      title: '保存中...',
      mask: true
    });

    try {
      const res = await wx.cloud.callFunction({
        name: 'user',
        data: {
          apiType: 'updateUser',
          name: name.trim(),
          phone: phone.trim() || undefined,
          idCard: idCard.trim() || undefined,
          address: address.trim() || undefined
        }
      });

      wx.hideLoading();

      if (res.result.res.code === 200) {
        wx.showToast({
          title: '保存成功',
          icon: 'success'
        });

        // 返回上一页
        setTimeout(() => {
          wx.navigateBack();
        }, 1500);
      } else {
        wx.showToast({
          title: res.result.res.msg || '保存失败',
          icon: 'none'
        });
      }
    } catch (error) {
      console.error('保存用户信息失败:', error);
      wx.hideLoading();
      wx.showToast({
        title: '保存失败，请重试',
        icon: 'none'
      });
    }
  }
});

